#include<stdio.h>
#include<stdlib.h>
#include<memory.h>

int dp[12][2048];
int m,n,start,level;

void dfs(int offset,int now)
{
    if(offset>=n)
    {
        dp[level+1][now]+=dp[level][start];
        return;
    }

    if((start & 1<<offset)>0)
    {
        dfs(offset+1,now);
    }
    else
    {
        dfs(offset+1,now | (1<<offset));

        if(offset< (n-1) && (start & 1<<(offset+1))==0)
        {
            dfs(offset+2,now);
        }
    }
}

int main()
{
    while(scanf("%d %d",&m,&n) && m>0 && n>0)
    {
        if((m*n)%2==1)
        {
            printf("%d\n",0);
            continue;
        }
        memset(dp,0,sizeof(dp));

        dp[0][0]=1;
        for(level=0;level<m;level++)
            for(start=0;start<(1<<n);start++)
            {
                if(dp[level][start]>0)
                {
                    dfs(0,0);
                }
            }

        printf("%d\n",dp[m][0]);
    }
    return 0;
}

